package com.leinao.project.dao;

import com.leinao.project.model.PaiDataSet;
import com.leinao.project.model.PaiProjectDatasetRelation;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 *
 * @Description 数据集Dao
 * @author lizi
 * @date 2018/11/16 下午6:48
 * @Version 1.0
 */
@Repository
public interface PaiDataSetMapper {
    /**
     * @Description 获取数据集信息
     * @param datasetId : 数据集ID
     * @author lizi
     * @date 2018/11/16 下午6:44
     */
    PaiDataSet getDatasetByDatasetId(@Param("datasetId") Long datasetId);

    /**
     * @Description 获取项目上关联的数据集列表信息
     * @param projectId : 项目ID
     * @author lizi
     * @date 2018/11/16 下午6:44
     */
    List<PaiDataSet> getDatasetListByProjectId(@Param("projectId") Long projectId);

    /**
     * @Description 更新数据集公开开关
     * @param datasetId : 数据集ID
     * @param type : 类型(公开1、私有0)
     * @param now : 当前时间
     * @author lizi
     * @date 2018/11/16 下午5:18
     */
    int updateDatasetTypeByDatasetId(@Param("datasetId") Long datasetId, @Param("type") Integer type, @Param("now") Long now);

    /**
     * @Description 获取项目选择的的数据集ID列表
     * @param projectId : 项目ID
     * @author lizi
     * @date 2018/11/19 上午11:32
     */
    List<Long> selectDataSetIdListByProjectId(Long projectId);

    /**
     * @Description 删除项目数据集关系
     * @param projectId : 项目ID
     * @param datasetIdList :  数据集ID列表
     * @author lizi
     * @date 2018/11/19 上午11:32
     */
    void deleteProjectDatasetRelation(@Param("projectId") Long projectId, @Param("datasetIdList") List<Long> datasetIdList);

    /**
     * @Description 新增项目数据集关系
     * @param projectDatasetRelationList : 项目数据集关系集合
     * @author lizi
     * @date 2018/11/19 上午11:32
     */
    void batchInsertProjectDatasetRelation( @Param("projectDatasetRelationList") List<PaiProjectDatasetRelation> projectDatasetRelationList);

    /**
     * @Description 获取所有进行分享的数据集ID集合
     * @author lizi
     * @date 2018/12/18 下午5:10
     */
    List<Long> getShareDataSetIdList(@Param("userId") String userId);
}